package com.example.demo01.controller;

import com.example.demo01.Entity.Client;
import com.example.demo01.Entity.SalesOpportunity;
import com.example.demo01.Service.ClientService;
import com.example.demo01.Service.SalesOpportunityService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@Controller
@RequestMapping("/opportunities")
public class SalesOpportunityController {

    @Autowired
    private SalesOpportunityService opportunityService;

    @Autowired
    private ClientService clientService;

    // 销售机会列表和录入页面
    @GetMapping("/manage")
    public String manageOpportunities(Model model) {
        // 获取所有销售机会
        List<SalesOpportunity> opportunities = opportunityService.getAllOpportunities();
//        opportunities 是从 opportunityService.getAllOpportunities() 获取的销售机会列表。
//        这个列表会被添加到 model 中，键名为 opportunities，这样它就可以在 Thymeleaf 页面中通过 ${opportunities} 访问。
//        你还将一个新的 SalesOpportunity 对象添加到模型中，用于表单数据的绑定
        model.addAttribute("opportunities", opportunities);  // 将销售机会数据传递到页面
        model.addAttribute("salesOpportunity", new SalesOpportunity()); // 用于新增销售机会的表单
        return "opportunity-list";  // 返回合并后的页面
    }
    // 处理销售机会录入的POST请求
    @PostMapping("/manage")
    public String createOpportunityController(@RequestParam Long clientId,
                                              @RequestParam String stage, // 获取销售阶段
                                              @RequestParam String status, // 获取销售状态
                                              @ModelAttribute SalesOpportunity opportunity) {
        // 检查客户ID是否为空
        if (clientId == null) {
            return "redirect:/opportunities/manage?error=clientNotNull";
        }

        // 查找 Client 实体
        Client client = clientService.findById(clientId);
        if (client == null) {
            return "redirect:/opportunities/manage?error=invalidClient";
        }

        // 设置 Client 到 SalesOpportunity 中
        opportunity.setClient(client);

        // 设置销售阶段和状态
        opportunity.setStage(stage);
        opportunity.setStatus(status);

        // 保存销售机会
        opportunityService.createOpportunity(opportunity);

        return "redirect:/opportunities/manage";  // 重定向到销售机会管理页面
    }
}
